import moveCamera from 'assets/js/CesiumFun/CesiumPubFun/modelMove'
import store from '../../../../store'

export default (viewer) => {
// 通用模型移动方法
    moveCamera(viewer)
// 自定义鼠标事件
    var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
    // 右键查看信息
    handler.setInputAction((movement) => {
        var pick = viewer.scene.pick(movement.position);
        if (!Cesium.defined(pick) || pick._batchId == undefined) {// 过滤未被Ceisum定义和不是3DTiles的模型
            return
        }
        if (pick.tileset.asset.extras[0].type != "camera") { // 过滤不是摄像头的模型
            return
        }
        store.commit("changeCameraId", pick.tileset.asset.extras[0].Id);// 记录右键的相机的id
        store.commit("showCameraUI", true);// 显示相机调整界面
        // 相机控制界面位置
        var ev = window.event;
        var mousePosition = { x: ev.pageX, y: ev.pageY }
        document.querySelector(".roll").style.left = mousePosition.x + "px";
        document.querySelector(".roll").style.top = mousePosition.y + "px";
    }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
}


















// ***模板
// import store from '../../../../store'
// import { change3Dtiles } from 'assets/js/CesiumFun/CesiumPubFun/modelControl'
// import { enableCamera } from 'assets/js/CesiumFun/CesiumPubFun/cameraControl'

// export default (viewer) => {
//     var cameraId;
//     var cameraCollection = store.state.camera.cameraCollection;
//     var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);

// // 左键拖动相机
//     // 鼠标按下时开始记录移动哪个相机
//     handler.setInputAction((movement) => {
//         var pick = viewer.scene.pick(movement.position);
//         if (!Cesium.defined(pick) || pick._batchId == undefined) {// 过滤未被Ceisum定义和不是3DTiles的模型
//             return
//         }
//         if (pick.tileset.asset.extras[0].cameraId == undefined) { // 过滤不是摄像头的模型
//             return
//         }
//         // 记录当前移动的是哪个相机
//         cameraId = pick.tileset.asset.extras[0].cameraId;
//         // 禁用鼠标改变视角（只移动鼠标，图层不跟随鼠标移动）
//         enableCamera(viewer, false)
//         // 在鼠标按下是选中的是相机时允许进行移动操作
//         store.commit('changeCamerastate', true)
//     }, Cesium.ScreenSpaceEventType.LEFT_DOWN)

//     // 鼠标移动时根据当前的相机id移动相机位置
//     handler.setInputAction((movement) => {
//         if(store.state.camera.moveCamera) {     // 允许移动相机
//             // 有建筑碰撞但无地形检测
//             var cartesian1 = viewer.scene.pickPosition(movement.endPosition);
//             // 有地形检测但无建筑碰撞
//             var cartesian2 = viewer.camera.pickEllipsoid(
//                 movement.endPosition,
//                 viewer.scene.globe.ellipsoid
//             )
//             // xyz坐标转换为经纬度
//             var cartographic1 = Cesium.Cartographic.fromCartesian(cartesian1);
//             var cartographic2 = Cesium.Cartographic.fromCartesian(cartesian2);
//             // 判断鼠标最后地点是否有建筑
//             var cartographic = cartographic1.height > 0 ? cartographic1 : cartographic2;// 经纬度坐标
//             var cartesian = cartographic1.height > 0 ? cartesian1 : cartesian2;         // xyz坐标
//             // 弧度转换为经纬度
//             var lat = Cesium.Math.toDegrees(cartographic.latitude);
//             var lon = Cesium.Math.toDegrees(cartographic.longitude);
//             // 更改相机位置
//             searchCamera(cameraCollection, cameraId, lon, lat, cartographic.height, cartesian)
//         }
//     }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

//     // 鼠标抬起时取消相机移动，并恢复鼠标拖动地图功能
//     handler.setInputAction((movement) => {
//         if (store.state.camera.moveCamera) {
//             // 鼠标抬起取消移动相机
//             store.commit('changeCamerastate', false);
//             // 启用Cesium相机功能
//             enableCamera(viewer, true)
//         }
//     }, Cesium.ScreenSpaceEventType.LEFT_UP);

// // 右键弹框
//     // 右键查看信息
//     handler.setInputAction((movement) => {
//         var pick = viewer.scene.pick(movement.position);
//         if (!Cesium.defined(pick) || pick._batchId == undefined) {// 过滤未被Ceisum定义和不是3DTiles的模型
//             return
//         }
//         if (pick.tileset.asset.extras[0].cameraId == undefined) { // 过滤不是摄像头的模型
//             return
//         }
//         store.commit("changeCameraId", pick.tileset.asset.extras[0].cameraId);// 记录右键的相机的id
//         store.commit("showCameraUI", true);// 显示相机调整界面
//         // 相机控制界面位置
//         var ev = window.event;
//         var mousePosition = { x: ev.pageX, y: ev.pageY }
//         document.querySelector(".roll").style.left = mousePosition.x + "px";
//         document.querySelector(".roll").style.top = mousePosition.y + "px";
//     }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
// }

// // 查找在vuex存储的相机，直到找到鼠标按下处的相机
// function searchCamera(cameraCollection, index, lon, lat, height, cartesian) {
//     for (let i = 0; i < cameraCollection.length; i++) {
//         if (cameraCollection[i].asset.extras[0].cameraId == index) {
//             // 更改位置
//             change3Dtiles(cameraCollection[i], lon, lat, height,
//                 store.state.camera.cameraCollection[i].asset.extras[0].rotation);
//             // 记录位置
//             cameraCollection[i].asset.extras[0].cameraPosition = cartesian;
//         }
//     }
// }

